1. Technical Field
The present invention relates generally to computer processing systems and, in particular, to a method for rendering display blocks on a display device of a computer processing system.
2. Background Description
FIG. 1 is a block diagram of a display subsystem 100 of a computer processing system according to the prior art. In particular, the display subsystem 100 corresponds to a computer processing system running a Windows NT or other modern operating system. The components of the display subsystem 100 are implemented as a combination of software and hardware.
The display subsystem includes a User Mode and a Kernel Mode. The User Mode includes one or more application programs (hereinafter "application program") 102, and an application level interface (API) 104. The application level interface 104 includes a Graphics Driver Interface (GDI) 104a and a Direct Draw (DD) and Direct 3D (D3D) interface (hereinafter collectively referred to as "DD/D3D interfaces", unless only one of the two is to be described or referred to, in which they shall be respectively referred to as "DD interface" and "D3D interface", in all cases having the reference character 104b).
The Kernel Mode includes a graphics engine (GRE) 106a corresponding to the GDI 104a, and Kernel mode Direct Draw and Direct 3D layers (hereinafter collectively referred to as "Kernel Mode DD/D3D layers", unless only one of the two is to be described or referred to, in which they shall be respectively referred to as "Kernel Mode DD layer" and "Kernel Mode D3D layer", in all cases having the reference character 106b) corresponding to the DD/D3D interfaces 104b. The Kernel Mode also includes a display driver 108a corresponding to the GRE 106a, and Direct Draw and Direct 3D drivers (hereinafter collectively referred to as "DD/D3D drivers", unless only one of the two is to be described or referred to, in which they shall be respectively referred to as "DD driver" and "D3D driver", in all cases having the reference character 108b) corresponding to Kernel Mode DD/D3D layers 106b. Moreover, the Kernel Mode includes hardware 110 (e.g., control processor, frame buffer, etc.).
The application program 102 issues drawing commands (e.g. Draw Rectangle) to the GDI 104a. In turn, the GDI issues drawing commands, many of which, such as, for example, draw a Dialog box, must be broken down into many graphics primitives. The graphics primitives spawned by the GDI 104a are then passed to the GRE 106a. The GRE 106a calls a defined set of functions in the display driver 108a, which implement the graphics primitives spawned by the GDI 104a.
In addition, the application 102 may issue Direct X commands. With respect to the video subsystem 100, Direct Draw (DD) and Direct 3D (D3D) commands are of the most interest. To support game manufactures, which required the fastest possible access to the video hardware, the DD interface 104b was introduced. The DD interface's main function is to support fast blitting to either the memory buffer (not shown) on the video card or to system memory (not shown). This is typically accomplished by having a front buffer (what the viewer sees) and a series of back buffers. Images are rendered to a back buffer and the back buffer is then flipped to the front buffer which is then seen by the viewer. Though all primitives can be rendered on either the front or back buffer through the standard GDI pipeline as described above, several commands can be directly sent to the DD driver 108b. Some examples of these commands are bitblt (copy an image stored in either system memory or display memory to either the front or back buffer), flip (flip the front and back buffers so that the contents of the former back buffer are now viewed), wait for vertical refresh, get the scan line that is being displayed, and so on. Many of these commands allow more direct control of the display hardware 110 than was previously exposed by the Windows architecture. For the bitblt example the coordinates for the source and destination of the image are specified and the filter driver would need to set up and control the off/on screen buffers on several video cards along with any system memory buffers used for graphics. Somewhat different than the GDI case, the command set is a much more low level interface to the graphics hardware. Thus in general, GDI commands usually need to be broken down to several graphics primitives while DD and D3D commands usually do not. This lower software overhead makes DD commands faster than GDI commands.
The D3D interface 104b was developed to allow greater performance for 3D graphics. Since 3D programming is much more complicated than DD programming, layers such as Open GL and D3D Retained mode were also developed. These layers are put on top of the D3D layer and the D3D layer is typically referred to as "D3D immediate mode". In general, the API for Open GL and D3D retained mode is much more application specific while D3D immediate mode is focused on being a low level interface to the 3D graphics hardware. Similar to the GDI 104a, an Open GL or D3D Retained mode interface will generally break the command down into one to several D3D immediate mode commands. An example of a D3D immediate mode command would be to set up a specific light (ambient, point, directional, etc.) and use this for the lighting of a scene.
Modern displays adapters implement many GRE, DD, and D3D primitives in hardware to accelerate system graphics. The vendor supplied display driver 108a and DD/D3D Drivers 108b inform the GRE 106a and Kernel Mode DD/D3D layers 106b, respectively, of the hardware's capabilities. When a primitive which can be accelerated in hardware is received it is forwarded to these drivers so that they can set up the display hardware 110 to perform the command. In order to know the hardware capabilities of the specific video card there is a list of defined functions and capabilities which the vendor supplied driver can specify that its hardware supports. Many of these capabilities are optional and a few are required. The capabilities are supplied to the GRE 106a and Kernel Mode DD/D3D layers 106b either when the operating system boots up or when it utilizes those components.
Unfortunately, prior art display subsystems in general, and video display adapters in particular, are designed to address only a maximum fixed number of rows and columns. Therefore, a very large display cannot be addressed by a single video card. Thus, it would be desirable and highly advantageous to have a method for rendering display blocks on a large display of a computer processing system.